============================================================================================================================
Modification Title: Member Referrals

Version: 1.0

Modification Description:
This modification will add the ability for members to choose who referred them to the forum on registation.
This modification will add the ability for members to choose who referred them to the forum in user control panel.
This modification will add the ability for super administrators to choose who referred a member to the forum in editprofile.
This modification will prevent a member with a uid of 1 from selecting who referred them for logical reasons.
This modification will prevent someone from selecting their own username as referred by.

Compatibility: XMB 1.9.5 SP1

Developed By: John Briggs

Copyright: Copyright:  2010 XMB Garage. All rights reserved.

Contributors: FunForum, Adam Clarke

InstallNote: Before Installing this modification you should back up all files and databases related to this modification.

License Note: This modification is released under the GPL v3 License. A copy is provided with this software package.

Author Note:
You downloaded this modification from XMBGarage.com, the #1 source for XMB related downloads.
Please visit http://www.xmbgarage.com/ for support.
============================================================================================================================
=======
Step 1:
=======

====================================
Go To Administration Panel --> Insert Raw SQL
====================================

Upload provided file named "SQL.txt" & click "Submit Changes" button.

============================================================================================================================
=======
Step 2:
=======
=======================
Edit File: lang/English.lang.php
=======================
==========
Find Code:
==========

?>

===============
Add Code Above:
===============

// Member Referrals Mod Begin
$lang['referrals'] = "Number of referrals:";
$lang['referredby'] = "Referred by:";
$lang['referred'] = "Members referred by this user:";
$lang['referralnoone'] = "No One";
// Member Referrals Mod End

============================================================================================================================
=======
Step 3:
=======
=============
Edit File: cp.php
=============
==========
Find Code:
==========

                $db->query("DELETE FROM $table_members WHERE uid='$delete'");

===============
Add Code Below:
===============

                // Member Referrals Mod Begin
                $db->query("UPDATE $table_members SET referredby='-1' WHERE referredby='$delete'");
                // Member Referrals Mod End

============================================================================================================================
=======
Step 4:
=======
===================
Edit File: editprofile.php
===================
==========
Find Code:
==========

loadtemplates('memcp_profile_avatarurl',

==================
Replace Code With:
==================

loadtemplates('memcp_profile_avatarurl','memcp_profile_referral',

==========
Find Code:
==========

    eval('echo stripslashes("'.template('admintool_editprofile').'");');

===============
Add Code Above:
===============

    // Member Referrals Mod Begin
    $referralblock = '';
    if ($member['uid'] != 1 And $member['referredby'] == 0) {
        $referlist = array();
        $referlist[] = '<select name="refer">';
        $referlist[] = '<option value="0" '.$selHTML.'>'.$lang['referralnoone'].'</option>';
        $query = $db->query("SELECT uid, username FROM $table_members ORDER BY username ASC");
        while($refinfo = $db->fetch_array($query)) {
            if ($refinfo['username'] != $user) {
                $referlist[] = '<option value="'.intval($refinfo['uid']).'">'.$refinfo['username'].'</option>';
            }
        }
        $referlist[] = '</select>';
        $referlist = implode("\n", $referlist);
        $db->free_result($query);
        eval('$referralblock = "'.template('memcp_profile_referral').'";');
    }
    // Member Referrals Mod End

==========
Find Code:
==========

    $db->query("UPDATE $table_members

===============
Add Code Above:
===============

    // Member Referrals Mod Begin
    $refsql = '';
    $refer = intval($refer);
    if ($refer != 0) {
        $refsql = "referredby='$refer',";
    }
    // Member Referrals Mod End

==========
Find Code:
==========

    $db->query("UPDATE $table_members SET email='$email',

==================
Replace Code With:
==================

    $db->query("UPDATE $table_members SET $refsql email='$email',

============================================================================================================================
=======
Step 5:
=======
=================
Edit File: member.php
=================
==========
Find Code:
==========

            eval('echo stripslashes("'.template('member_reg').'");');

===============
Add Code Above:
===============

            // Member Referrals Mod Begin
            $referlist = array();
            $referlist[] = '<select name="refer">';
            $referlist[] = '<option value="0" '.$selHTML.'>'.$lang['referralnoone'].'</option>';
            $query = $db->query("SELECT uid, username FROM $table_members ORDER BY username ASC");
            if ($db->num_rows($query) != 0) {
                while($refinfo = $db->fetch_array($query)) {
                    $referlist[] = '<option value="'.intval($refinfo['uid']).'">'.$refinfo['username'].'</option>';
                }
            }
            $referlist[] = '</select>';
            $referlist = implode("\n", $referlist);
            $db->free_result($query);
            // Member Referrals Mod End

==========
Find Code:
==========

        $db->query("INSERT INTO $table_members (uid, username

===============
Add Code Below:
===============

        // Member Referrals Begin
        $refer = intval($refer);
        $db->query("UPDATE $table_members SET referredby='$refer' WHERE username='$username'");
        // Member Referrals End

==========
Find Code:
==========

            $memberinfo['location'] = censor($memberinfo['location']);

===============
Add Code Above:
===============

            // Member Referrals Mod Begin
            if ($memberinfo['referredby'] == 0) {
                $referredby = $lang['referralnoone'];
            } else if ($memberinfo['referredby'] != 0) {
                $query = $db->query("SELECT username FROM $table_members WHERE uid='".(int)$memberinfo['referredby']."'");
                $referredby = $db->result($query, 0);
                $referredby = '<a href="member.php?action=viewpro&amp;member='.rawurlencode($referredby).'">'.$referredby.'</a>';
            }

            $referredlist = '';
            $referredcount = 0;
            $comma = '';
            $query = $db->query("SELECT username FROM $table_members WHERE referredby='".(int)$memberinfo['uid']."'");
            if ($db->num_rows($query) != 0) {
                while($refmem = $db->fetch_array($query)) {
                    if ($refmem['username'] != '') {
                        $referredlist .= $comma.'<a href="member.php?action=viewpro&amp;member='.rawurlencode($refmem['username']).'">'.$refmem['username'].'</a>';
                        $referredcount++;
                        $comma = ', ';
                    }
                }
            } else {
                $referredlist = $lang['referralnoone'];
            }
            // Member Referrals Mod End

============================================================================================================================
=======
Step 6:
=======
=================
Edit File: memcp.php
=================
==========
Find Code:
==========

'memcp_profile_avatarurl',

===============
Add Code Below:
===============

'memcp_profile_referral',

==========
Find Code:
==========

        eval('echo stripslashes("'.template('memcp_profile').'");');

===============
Add Code Above:
===============

        // Member Referrals Mod Begin
        $referralblock = '';
        if ($member['uid'] != 1 And $member['referredby'] == 0) {
            $referlist = array();
            $referlist[] = '<select name="refer">';
            $referlist[] = '<option value="0" '.$selHTML.'>'.$lang['referralnoone'].'</option>';
            $query = $db->query("SELECT uid, username FROM $table_members ORDER BY username ASC");
            while($refinfo = $db->fetch_array($query)) {
                if ($refinfo['username'] != $xmbuser) {
                    $referlist[] = '<option value="'.intval($refinfo['uid']).'">'.$refinfo['username'].'</option>';
                }
            }
            $referlist[] = '</select>';
            $referlist = implode("\n", $referlist);
            $db->free_result($query);
            eval('$referralblock = "'.template('memcp_profile_referral').'";');
        }
        // Member Referrals Mod End

==========
Find Code:
==========

        $db->query("UPDATE $table_members SET $pwtxt

===============
Add Code Above:
===============

        // Member Referrals Mod Begin
        $refsql = '';
        $refer = intval($refer);
        if ($refer != 0) {
            $refsql = "referredby='$refer',";
        }
        // Member Referrals Mod End

==========
Find Code:
==========

        $db->query("UPDATE $table_members SET $pwtxt

================
Replace Code With:
================

        $db->query("UPDATE $table_members SET $refsql $pwtxt

============================================================================================================================
=======
Step 7:
=======
===============================
Go To Administration Panel --> Templates
===============================
===========================
Edit Template: admintool_editprofile
===========================
==========
Find Code:
==========

<tr>
<td bgcolor="$altbg1" width="22%" class="tablerow">$lang[textsite]</td>
<td bgcolor="$altbg2" class="tablerow"><input type="text" name="newsite" size="25" value="$member[site]" /></td>
</tr>

===============
Add Code Above:
===============

$referralblock

============================================================================================================================
=======
Step 8:
=======
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit Template: memcp_profile
=======================
==========
Find Code:
==========

<tr>
<td bgcolor="$altbg1" width="22%" class="tablerow">$lang[textsite]</td>
<td bgcolor="$altbg2" class="tablerow"><input type="text" name="newsite" size="25" value="$member[site]" /></td>
</tr>

===============
Add Code Above:
===============

$referralblock

============================================================================================================================
=======
Step 9:
=======
===============================
Go To Administration Panel --> Templates
===============================
=======================
Edit Template: member_profile
=======================
==========
Find Code:
==========

<tr>
<td bgcolor="$altbg1" valign="top" class="tablerow">$lang[textprofforumma]</td>
<td bgcolor="$altbg2" class="tablerow">$topforum</td>
</tr>

===============
Add Code Above:
===============

<tr class="tablerow">
<td bgcolor="$altbg1" valign="top" width="22%">$lang[referredby]</td>
<td bgcolor="$altbg2">$referredby</td>
</tr>

<tr class="tablerow">
<td bgcolor="$altbg1" valign="top" width="22%">$lang[referrals]</td>
<td bgcolor="$altbg2">$referredcount</td>
</tr>

<tr class="tablerow">
<td bgcolor="$altbg1" valign="top" width="22%">$lang[referred]</td>
<td bgcolor="$altbg2">$referredlist</td>
</tr>

============================================================================================================================
========
Step 10:
========
===============================
Go To Administration Panel --> Templates
===============================
=====================
Edit Template: member_reg
=====================
==========
Find Code:
==========

<tr>
<td bgcolor="$altbg1" class="tablerow" width="22%">$lang[textsite]</td>
<td bgcolor="$altbg2" class="tablerow"><input type="text" name="site" size="25" value="" /></td>
</tr>

===============
Add Code Above:
===============

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[referredby]</td>
<td bgcolor="$altbg2">$referlist</td>
</tr>

============================================================================================================================
========
Step 11:
========
===============================
Go To Administration Panel --> Templates
===============================
==============================
Create Template: memcp_profile_referral
==============================
=========================
Add Code And Submit Changes:
=========================

<tr class="tablerow">
<td bgcolor="$altbg1" width="22%">$lang[referredby]</td>
<td bgcolor="$altbg2">$referlist</td>
</tr>

============================================================================================================================
========
Step 12:
========

Upload all edited files regarding this hack to there proper locations.

============================================================================================================================
Enjoy!